package com.ts.api.module.product.dao;

import com.ts.api.module.product.entity.po.ProductApplyFlowPO;
import com.ts.api.module.product.entity.qo.ProductApplyFlowQO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 *  机构进件流程相关
 *
 *  @author Pan
 */
@Mapper
public interface ProductApplyFlowDao {

    /**
     *  根据查询对象查询流程集合
     *
     *  @param  productApplyFlowQO
     *  @return List
     */
    List<ProductApplyFlowPO> list(ProductApplyFlowQO productApplyFlowQO);

    /**
     *  根据查询对象查询流程集合，用于撞库（注：通过只查询用的到的字段来提升性能）
     *
     *  @param  productApplyFlowQO
     *  @return List
     */
    List<ProductApplyFlowPO> listForDataExchange(ProductApplyFlowQO productApplyFlowQO);

    /**
     *  根据查询对象获取进件流程
     *
     *  @param  productApplyFlowQO
     *  @return
     */
    ProductApplyFlowPO get(ProductApplyFlowQO productApplyFlowQO);

    /**
     *  根据流程状态查询总数
     *
     *  @param  productApplyFlowQO
     *  @return
     */
    int countStatus(ProductApplyFlowQO productApplyFlowQO);

    /**
     *  插入机构进件流程
     *
     *  @param  productApplyFlowPO
     *  @return int
     */
    int insert(ProductApplyFlowPO productApplyFlowPO);

    /**
     *  批量插入机构进件流程
     *
     *  @param  listProductApplyFlowPO
     *  @return int
     */
    int batchInsert(List<ProductApplyFlowPO> listProductApplyFlowPO);

    /**
     *  更新流程状态根据流程主键id
     *
     *  @param  productApplyFlowPO  流程实体
     *  @return row
     */
    int updateFlowStatusById(ProductApplyFlowPO productApplyFlowPO);
}
